package com.syn;

import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * 表单字段映射 通过监听mybaits动作知道是哪个表更新或者新生什么数据，在匹配现有的规则。
 */
@Data
public class FormMapping {
    /** 冗余字段更新类型：字段初始化操做 */
    public static final String MAPPING_TYPE_INIT= "0";
    /** 冗余字段更新类型：字段同步更新操做 */
    public static final String MAPPING_TYPE_UPDATE= "1";
    /** 映射标识 */
    private String mappingId;
    /** 源表单对象 */
    private FormInfo srcForm;
    /** 目标表单对象 */
    private FormInfo destForm;
    /** 操做环节 */
    private String actionId;
    /** 操做类型 ： 初始化 / 同步更新 */
    private String mappingType;

    /**
     * 保存表单查询条件 :queryField - valueField 值对。
     * 用于根据当前表单的信息查询到映射表单的记录，获取源数据或者需更新的记录
     */
    private Map<String,String> queryFieldsMap = new HashMap<String,String>();

    /**
     * 字段映射关系 srcField <----> destField
     */
    private Map<String,String> mappingFieldsMap = new HashMap<String,String>();

    public FormMapping(String mappingId, FormInfo srcForm, FormInfo destForm, String actionId, String mappingType) {
        this.mappingId = mappingId;
        this.srcForm = srcForm;
        this.destForm = destForm;
        this.actionId = actionId;
        this.mappingType = mappingType;
    }

    /**
     * 添加字段映射
     * @paramsrcFieldName  源字段
     * @paramdestFieldName 目标字段
     */
    public void addMappingField(String srcFieldName,String destFieldName)
    {
        mappingFieldsMap.put(srcFieldName,destFieldName);
    }

    /**
     * 添加表单查询字段
     * @paramqueryFieldName  目标表单的查询字段
     * @paramvalueFieldName  源表单的查询值来源字段
     */
    public void addQueryField(String queryFieldName,String valueFieldName)
    {
        queryFieldsMap.put(queryFieldName,valueFieldName);
    }
}
